<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>jquery proxy</title>
</head>

<body>
<button id="btn">点我变红</button>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script>
  /*
  接受一个函数，然后返回一个新函数，并且这个新函数始终保持了特定的上下文语境。
jQuery.proxy( function, context ) function为执行的函数，content为函数的上下文this值会被设置成这个object对象
  */
  let btn = document.getElementById('btn');
  btn.addEventListener('click', function () {
    setTimeout($.proxy((function () {
      $(this).css('color', 'red');
    }), this), 1000);
  });

  //↓原理
  // function proxy(fn, context) {
  //   return function () {
  //     return fn.call(context, arguments);
  //   }
  // }
</script>
</body>

</html>
